// src/service.js
import axios from 'axios'
import { ElNotification } from 'element-plus'

// 创建一个 axios 实例
const service = axios.create({
    baseURL: 'http://localhost:9000',  // 接口根路径
    timeout: 20000,                     // 超时时间 20s
    withCredentials: true               // 携带跨域 cookie
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        // 注意：浏览器端设置 Access-Control-Allow-* 头是无效的，
        // 这些 CORS 相关的头必须由服务端返回。
        // 这里只演示如果真的要给后端透传一些自定义头，可以这么写：
        config.headers['X-My-Custom-Header'] = 'foobar'
        return config
    },
    error => {
        // 请求发送失败
        return Promise.reject(error)
    }
)

// 响应拦截器
service.interceptors.response.use(
    response => {

        if (response.config.responseType === 'blob') {
            return response.data;
        }
        const resp = response.data
        // 假设后端返回 { code: number, message: string, data: ... }
        if (resp.status !== 200) {
            console.log('响应数据:', response)
            ElNotification({
                title: '错误',
                message: resp.msg || '未知错误',
                type: 'error'
            })
            // 根据业务需求 reject 或者直接返回一个空值
            return Promise.reject(new Error(resp.msg))
        }
        // 成功，直接把 data 返回给业务层
        return resp.data
    },
    error => {
        // 响应失败（网络、超时、服务器 5xx 等）
        ElNotification({
            title: '网络错误',
            message: error.message,
            type: 'error'
        })
        return Promise.reject(error)
    }
)

export default service
